﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Obligatorio1.Modelo;
using Obligatorio1.Controladores;


namespace Obligatorio1
{
    class ManejadorGrupo
    {
        private static ManejadorGrupo manejador = null;

        public static ManejadorGrupo getInstance()
        {
            if (manejador == null)
            { manejador = new ManejadorGrupo(); }
            return manejador;
        }

        public void agergarGrupo(String nombre) 
        {
            Grupo g = new Grupo();
            g.nombre = nombre;
            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
            oe.Grupo.AddObject(g);
            oe.SaveChanges();
        }

        public void agergarGrupo(Grupo g)
        {
            try
            {            
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                oe.Grupo.AddObject(g);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }

        public void borrarGrupo(Grupo g) 
        {
            try
            {
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                oe.Grupo.DeleteObject(g);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }

        public void borrarPersonaGrupo(Grupo g, Persona p)
        {
            try
            {
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                g.Persona.Remove(p);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }

        public List<Grupo> listar() 
        {
            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
            var grupos = from g in oe.Grupo
                           select g;
            return grupos.ToList(); 
        }

        public string exportar(char separador, Persona p)
        {
            String exp = "";

            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();

            List<Grupo> gpsPersona = p.Grupo.ToList();

            foreach (Grupo g in gpsPersona)
            {
                exp += separador + g.nombre;
            }

            return exp;
        }

        internal bool Contiene(string p)
        {
            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();

            var grupos = from Grupo g in oe.Grupo
                            where (g.nombre.Equals(p))
                            select g;

            return grupos.Count() != 0;
        }

        internal bool Igual(Grupo gs, Grupo g)
        {
            return gs.nombre.Equals(g.nombre);
        }
    }

   
}
